package com.bodu.core.common;

import com.bodu.core.entity.CommonEntity;
import com.bodu.core.entity.ParamReq;
import io.lettuce.core.dynamic.annotation.Param;

import java.util.List;

/**
 * @author gaoya
 * @Description 基本Mapper
 * @date 2022 - 08 - 24 21:38:36
 */
public interface CommonMapper<REQ extends CommonEntity , VO extends CommonEntity> {
    /**
     * 查询基本信息
     *
     * @param id
     * @return
     */
    VO getModel(Long id);

    /**
     * 保存数据
     *
     * @param t
     * @return
     */
    Long save(REQ t);

    /**
     * 更新基础信息
     *
     * @param t
     * @return
     */
    Long update(REQ t);

    /**
     * 查询基础数据
     *
     * @param params
     * @return
     */
    List<VO> listPage(ParamReq<REQ> params);

    /**
     * 查询基础数据量
     *
     * @param params
     * @return
     */
    Integer countPage(ParamReq<REQ> params);

    /**
     * 删除数据
     *
     * @param id
     * @return
     */
    Integer delete(@Param("id") Long id);

    /**
     * 更新删除标志
     * @param id
     * @param delFlag
     * @return
     */
    Integer updateDelFlagById(@Param("id")Long id, @Param("delFlag")Integer delFlag);

    /**
     * 批量删除数据
     *
     * @param ids
     * @return
     */
    Integer batchDelete(@Param("ids") List<Long> ids);
}
